package config

import (
	"sync"

	"github.com/zeromicro/go-zero/rest"
)

type Config struct {
	rest.RestConf
	ES             ESConfig
	ESIndexConfigs []ESIndexConfig
	JWT struct {
		AccessSecret string
	}
}

type BaseConfig struct {
	Consul ConsulConfig
}

type ConsulConfig struct {
	Host      string
	Key       string // 服务注册key
	ConfigKey string // 配置key
	Token     string
	TTL       int
}

type ESConfig struct {
	Addresses       []string
	ApiKey          string
	DefaultIndex    string
	Timeout         int
	AutoCreateIndex bool
}

type ESIndexConfig struct {
	Name           string                 `json:"Name"`
	AutoCreate     bool                   `json:"AutoCreate"`
	MappingFile    string                 `json:"MappingFile"`
	DefaultMapping map[string]interface{} `json:"DefaultMapping"`
}

var (
	baseCfg BaseConfig
	once    sync.Once
)

// GetBaseConfig 返回已加载的基础配置
func GetBaseConfig() BaseConfig {
	return baseCfg
}

// SetBaseConfig 设置基础配置（供 main 函数调用）
func SetBaseConfig(cfg BaseConfig) {
	once.Do(func() {
		baseCfg = cfg
	})
}

